
#include "CubitEvent.hpp"
#include <stddef.h>

class CubitObservable;

class CUBIT_UTIL_EXPORT CubitOperationEvent : public CubitEvent
{
  public:
    enum Type
    {
      DEVELOPER_COMMAND_FLAG_MODIFIED,
      HEALER_COMPLETED,
      COMPOSITE_CREATION_COMPLETED,
      SPLIT_SURFACE_COMPLETED,
      SEPARATE_OPERATION_COMPLETED,
      COLLAPSE_CURVE_COMPLETED,
      AUTO_CLEAN_COMPLETED,
      GEOMETRY_DEFEATURING_COMPLETED,
      REMOVE_SURFACE_COMPLETED,
      REMOVE_TOPOLOGY_COMPLETED,
      REGULARIZE_ENTITY_COMPLETED,
      WEBCUT_COMPLETED,
      ENTITIES_MODIFIED,
      BOOLEAN_OPERATION_COMPLETE,
      MODEL_RESET,
      GRAPHICS_MODE_MODIFIED,
      SUSPEND_GENESIS_PROCESSING,
      RESUME_GENESIS_PROCESSING,
      UPDATE_GENESIS_DISPLAY,
      UNDO_STATE_CHANGED,
      UNDO_COMPLETE,
      GRANITE_FILE_IMPORTED,
      GEOMETRY_ENGINE_CHANGED,
      WORKING_DIRECTORY_CHANGED,
      APREPRO_MODIFIED,
      FATAL_ERROR_ENCOUNTERED,
      IDS_COMPRESSED,
      COMMAND_STARTED,
      COMMAND_FINISHED
    };

    CubitOperationEvent(Type type);
    ~CubitOperationEvent();

    CubitObservable* get_entity() const { return NULL; }

    Type get_type() const {return mType;}

protected:
    Type mType;
}; 

